/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package station;

import java.util.Random;

/**
 *
 * @author safe
 */
public final class DataSlotBelegung {

    private static boolean[] slotBelegung = new boolean[25]; // geiler name ^^
    private static int ourNextSlot = -1;
    private static Random rand = new Random();

    private DataSlotBelegung() {
    }

    public static int getOurNextSlot() {
        return ourNextSlot;
    }

//    synchronized static int getNextFreeSlotNumber() {
//        for (int i = 0; i < 25; i++) {
//            if (slotBelegung[i] == false) {
//                return i;
//            }
//        }
//        return -1;
//    }
    static void setNextSlot(int i) {
        ourNextSlot = i;
    }

    synchronized static void calculateNextFreeSlot() {
        // alle leeren slots zählen und array zu initialisieren
        int freeSlotNumbers = 0;
        for (int i = 0; i < 25; i++) {
            if (slotBelegung[i] == false) {
                freeSlotNumbers++;
            }
        }
//        jede freie slotnummer als value in dieses array eintragen
        int[] arrayForRandom = new int[freeSlotNumbers];
        int j = 0;
        for (int i = 0; i < 25; i++) {
            if (slotBelegung[i] == false) {
                arrayForRandom[j] = i;
                j++;
            }
        }
        // random eine slotnummer auswählen
        ourNextSlot = arrayForRandom[rand.nextInt(j)];
        setSlotReserved(ourNextSlot);
    }

    static synchronized void setSlotReserved(int slotNumber) {
        if (slotNumber >= 0 && slotNumber < 25) {
            slotBelegung[slotNumber] = true;
        }
    }

    static synchronized void setSlotFree(int slotNumber) {
        if (slotNumber >= 0 && slotNumber < 25) {
            slotBelegung[slotNumber] = false;
        }
    }

    static synchronized void setAllToFalse() {
        for (int i = 0; i < 25; i++) {
            slotBelegung[i] = false;
        }
    }
}
